#ifndef CGAMESERVER_H_INCLUDED
#define CGAMESERVER_H_INCLUDED

#include <map>
#include "MinionStat.h"

struct RakNetGUID;
class RakPeerInterface;

class CGameServer
{
  public:
    CGameServer();

    virtual ~CGameServer();

    void readPacket();

    void loginRequest();

    void createAccountRequest();

    void addMinionRequest();

    void removeMinionRequest();

    void ackGameResult();

    void clientDisconnect(RakNetGUID &guid);

    void loadMinionBase();

    void getServerConfig();
  protected:
  private:
    //! The RakPeerInterface for Game Server
    RakPeerInterface *server;

    //! The entire lists of players
    std::map <RakNetGUID, int> player_list;

    //! The entire lists of minion base type
    std::map <int, minionStats> minion_base;

    Packet * packet;

    unsigned short server_port_;

    unsigned short max_connection_;
};

#endif // CGAMESERVER_H_INCLUDED
